(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Power
public class Power {
public static void main(String args[]) {
for (int i = 0; i < args.length; i++) {
even(power(args.length, args[i].length()));
odd( power(args.length, args[i].length()));
}
// power(args.length, args.length);
}

public static int power(int a, int n) {
if (n <= 0) return 1;
else if (n == 1) return a;
else {
int r = power(a * a, n/2);
if (n % 2 == 0) return r;
else return a * r;
}
}

public static boolean even(int n) {
if (n <= 0) return true;
else if (n == 1) return false;
else return odd(n - 1);
}

public static boolean odd(int n) {
if (n <= 0) return false;
else if (n == 1) return true;
else return even(n - 1);
}
}

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Power.main([Ljava/lang/String;)V: Graph of 172 nodes with 1 SCC.

Power.power(II)I: Graph of 45 nodes with 0 SCCs.

Power.even(I)Z: Graph of 29 nodes with 0 SCCs.

Power.odd(I)Z: Graph of 27 nodes with 0 SCCs.


(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Logs:


Log for SCC 0:

Generated 26 rules for P and 26 rules for R.


Combined rules. Obtained 1 rules for P and 5 rules for R.


Filtered ground terms:


924_0_even_GT(x1, x2, x3) → 924_0_even_GT(x2, x3)
Cond_924_0_even_GT(x1, x2, x3, x4) → Cond_924_0_even_GT(x1, x3, x4)
1422_0_odd_Return(x1, x2) → 1422_0_odd_Return(x2)
1224_0_even_Return(x1, x2) → 1224_0_even_Return(x2)
1067_0_even_Return(x1, x2, x3) → 1067_0_even_Return
1372_0_odd_Return(x1, x2, x3) → 1372_0_odd_Return
980_0_even_Return(x1, x2) → 980_0_even_Return(x2)

Filtered duplicate args:


924_0_even_GT(x1, x2) → 924_0_even_GT(x2)
Cond_924_0_even_GT(x1, x2, x3) → Cond_924_0_even_GT(x1, x3)

Combined rules. Obtained 1 rules for P and 5 rules for R.


Finished conversion. Obtained 1 rules for P and 5 rules for R. System has predefined symbols.




Log for SCC 1:

Generated 16 rules for P and 27 rules for R.


Combined rules. Obtained 1 rules for P and 6 rules for R.


Filtered ground terms:


730_0_power_GT(x1, x2, x3) → 730_0_power_GT(x2, x3)
Cond_730_0_power_GT(x1, x2, x3, x4) → Cond_730_0_power_GT(x1, x3, x4)
1287_0_power_Return(x1) → 1287_0_power_Return
Cond_1072_0_power_NE(x1, x2, x3) → Cond_1072_0_power_NE(x1, x3)
1072_0_power_NE(x1, x2) → 1072_0_power_NE(x2)
1188_0_power_Return(x1) → 1188_0_power_Return
845_0_power_Return(x1, x2) → 845_0_power_Return
763_0_power_Return(x1, x2) → 763_0_power_Return

Filtered duplicate args:


730_0_power_GT(x1, x2) → 730_0_power_GT(x2)
Cond_730_0_power_GT(x1, x2, x3) → Cond_730_0_power_GT(x1, x3)

Filtered unneeded arguments:


Cond_1072_0_power_NE(x1, x2) → Cond_1072_0_power_NE(x1)

Combined rules. Obtained 1 rules for P and 6 rules for R.


Finished conversion. Obtained 1 rules for P and 6 rules for R. System has predefined symbols.




Log for SCC 2:

Generated 76 rules for P and 193 rules for R.


Combined rules. Obtained 14 rules for P and 25 rules for R.


Filtered ground terms:


2420_0_even_Load(x1, x2) → 2420_0_even_Load(x2)
1287_0_power_Return(x1, x2) → 1287_0_power_Return(x2)
845_0_power_Return(x1, x2, x3, x4) → 845_0_power_Return(x2, x4)
2595_0_power_Load(x1, x2, x3) → 2595_0_power_Load(x2, x3)
Cond_2420_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod2(x1, x3, x4)
1067_0_even_Return(x1, x2, x3) → 1067_0_even_Return
2636_0_odd_Load(x1, x2) → 2636_0_odd_Load(x2)
2387_0_power_Load(x1, x2, x3) → 2387_0_power_Load(x2, x3)
Cond_2636_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod2(x1, x3, x4)
1372_0_odd_Return(x1, x2, x3) → 1372_0_odd_Return
Cond_2636_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod1(x1, x3, x4)
1347_0_odd_Return(x1, x2) → 1347_0_odd_Return(x2)
1422_0_odd_Return(x1, x2) → 1422_0_odd_Return(x2)
763_0_power_Return(x1, x2, x3, x4) → 763_0_power_Return(x2)
1188_0_power_Return(x1, x2, x3, x4) → 1188_0_power_Return(x2, x3, x4)
Cond_2420_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod1(x1, x3, x4)
980_0_even_Return(x1, x2, x3) → 980_0_even_Return(x2)
1224_0_even_Return(x1, x2) → 1224_0_even_Return(x2)
Cond_1072_0_power_NE(x1, x2, x3, x4, x5) → Cond_1072_0_power_NE(x1, x3, x4, x5)
1072_0_power_NE(x1, x2, x3, x4) → 1072_0_power_NE(x2, x3, x4)
730_0_power_GT(x1, x2, x3, x4) → 730_0_power_GT(x2, x3, x4)
Cond_730_0_power_GT2(x1, x2, x3, x4, x5) → Cond_730_0_power_GT2(x1, x3, x4, x5)
960_0_power_Return(x1, x2, x3) → 960_0_power_Return(x2)
Cond_730_0_power_GT1(x1, x2, x3, x4, x5) → Cond_730_0_power_GT1(x1, x3, x4, x5)
Cond_730_0_power_GT(x1, x2, x3, x4, x5) → Cond_730_0_power_GT(x1, x3)
1300_0_odd_GT(x1, x2, x3) → 1300_0_odd_GT(x2, x3)
Cond_924_0_even_GT3(x1, x2, x3, x4) → Cond_924_0_even_GT3(x1, x3, x4)
924_0_even_GT(x1, x2, x3) → 924_0_even_GT(x2, x3)
1353_0_odd_Return(x1, x2) → 1353_0_odd_Return(x2)
Cond_924_0_even_GT2(x1, x2, x3, x4) → Cond_924_0_even_GT2(x1, x3, x4)
Cond_924_0_even_GT1(x1, x2, x3, x4) → Cond_924_0_even_GT1(x1)
Cond_924_0_even_GT(x1, x2, x3, x4) → Cond_924_0_even_GT(x1, x3, x4)
Cond_1300_0_odd_GT3(x1, x2, x3, x4) → Cond_1300_0_odd_GT3(x1, x3, x4)
1406_0_even_Return(x1, x2) → 1406_0_even_Return(x2)
Cond_1300_0_odd_GT2(x1, x2, x3, x4) → Cond_1300_0_odd_GT2(x1, x3, x4)
Cond_1300_0_odd_GT1(x1, x2, x3, x4) → Cond_1300_0_odd_GT1(x1)
Cond_1300_0_odd_GT(x1, x2, x3, x4) → Cond_1300_0_odd_GT(x1, x3, x4)

Filtered duplicate args:


845_0_power_Return(x1, x2) → 845_0_power_Return(x2)
1188_0_power_Return(x1, x2, x3) → 1188_0_power_Return(x1, x3)
730_0_power_GT(x1, x2, x3) → 730_0_power_GT(x1, x3)
Cond_730_0_power_GT2(x1, x2, x3, x4) → Cond_730_0_power_GT2(x1, x2, x4)
Cond_730_0_power_GT1(x1, x2, x3, x4) → Cond_730_0_power_GT1(x1, x2, x4)
1300_0_odd_GT(x1, x2) → 1300_0_odd_GT(x2)
Cond_924_0_even_GT3(x1, x2, x3) → Cond_924_0_even_GT3(x1, x3)
924_0_even_GT(x1, x2) → 924_0_even_GT(x2)
Cond_924_0_even_GT2(x1, x2, x3) → Cond_924_0_even_GT2(x1, x3)
Cond_924_0_even_GT(x1, x2, x3) → Cond_924_0_even_GT(x1, x3)
Cond_1300_0_odd_GT3(x1, x2, x3) → Cond_1300_0_odd_GT3(x1, x3)
Cond_1300_0_odd_GT2(x1, x2, x3) → Cond_1300_0_odd_GT2(x1, x3)
Cond_1300_0_odd_GT(x1, x2, x3) → Cond_1300_0_odd_GT(x1, x3)

Filtered unneeded arguments:


Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_1300_0_odd_GT(x1, x2) → Cond_1300_0_odd_GT(x1)
Cond_924_0_even_GT(x1, x2) → Cond_924_0_even_GT(x1)
Cond_1072_0_power_NE(x1, x2, x3, x4) → Cond_1072_0_power_NE(x1, x2, x3)

Filtered all free variables:


2595_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2595_1_main_InvokeMethod(x2, x3, x4, x5)
2636_1_main_InvokeMethod(x1, x2, x3, x4) → 2636_1_main_InvokeMethod(x2, x3, x4)
Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2636_1_main_InvokeMethod(x1, x3, x4)
2387_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2387_1_main_InvokeMethod(x2, x3, x4, x5)
2420_1_main_InvokeMethod(x1, x2, x3, x4) → 2420_1_main_InvokeMethod(x2, x3, x4)
Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2420_1_main_InvokeMethod(x1, x3, x4)
1347_0_odd_Return(x1) → 1347_0_odd_Return
980_0_even_Return(x1) → 980_0_even_Return

Combined rules. Obtained 12 rules for P and 25 rules for R.


Finished conversion. Obtained 12 rules for P and 25 rules for R. System has predefined symbols.


(4) Complex Obligation (AND)

(5) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(0): 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1), x0[0])
(1): COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(x0[1] - 1 - 1)

(0) -> (1), if ((x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1) →* TRUE)∧(x0[0]* x0[1]))


(1) -> (0), if ((x0[1] - 1 - 1* x0[0]))



The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

(6) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 924_0_EVEN_GT(x0) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0, 0), !(=(x0, 1))), <(0, -(x0, 1))), !(=(-(x0, 1), 1))), x0) the following chains were created:
  • We consider the chain 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0]), COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1)) which results in the following constraint:

    (1)    (&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1)))=TRUEx0[0]=x0[1]924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraints:

    (2)    (<(0, -(x0[0], 1))=TRUE>(x0[0], 0)=TRUE<(-(x0[0], 1), 1)=TRUE<(x0[0], 1)=TRUE924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))


    (3)    (<(0, -(x0[0], 1))=TRUE>(x0[0], 0)=TRUE<(-(x0[0], 1), 1)=TRUE>(x0[0], 1)=TRUE924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (4)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (3) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (5)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (4) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (6)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (5) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (7)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (6) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (7) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (14)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We solved constraint (12) using rule (IDP_SMT_SPLIT).We solved constraint (13) using rule (IDP_SMT_SPLIT).We solved constraint (14) using rule (IDP_SMT_SPLIT).We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    (x0[0] ≥ 0∧[1] + x0[0] ≥ 0∧[-1] + x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(5)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (17)    ([1] + x0[0] ≥ 0∧[2] + x0[0] ≥ 0∧x0[0] ≥ 0∧[1] + x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(7)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)







For Pair COND_924_0_EVEN_GT(TRUE, x0) → 924_0_EVEN_GT(-(-(x0, 1), 1)) the following chains were created:
  • We consider the chain COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1)) which results in the following constraint:

    (18)    (COND_924_0_EVEN_GT(TRUE, x0[1])≥NonInfC∧COND_924_0_EVEN_GT(TRUE, x0[1])≥924_0_EVEN_GT(-(-(x0[1], 1), 1))∧(UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥))



    We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (19)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)



    We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (20)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)



    We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (21)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)



    We simplified constraint (21) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (22)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧0 = 0∧[4 + (-1)bso_26] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 924_0_EVEN_GT(x0) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0, 0), !(=(x0, 1))), <(0, -(x0, 1))), !(=(-(x0, 1), 1))), x0)
    • ([1] + x0[0] ≥ 0∧[2] + x0[0] ≥ 0∧x0[0] ≥ 0∧[1] + x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(7)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

  • COND_924_0_EVEN_GT(TRUE, x0) → 924_0_EVEN_GT(-(-(x0, 1), 1))
    • ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧0 = 0∧[4 + (-1)bso_26] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(924_0_even_GT(x1)) = [-1] + [-1]x1   
POL(Cond_924_0_even_GT(x1, x2)) = [-1] + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(980_0_even_Return(x1)) = x1   
POL(1172_1_even_InvokeMethod(x1, x2)) = [-1]   
POL(1372_0_odd_Return) = [-1]   
POL(1) = [1]   
POL(1224_0_even_Return(x1)) = [-1]   
POL(1422_0_odd_Return(x1)) = [-1]   
POL(1401_1_odd_InvokeMethod(x1, x2)) = [-1]   
POL(1067_0_even_Return) = [-1]   
POL(924_0_EVEN_GT(x1)) = [1] + [2]x1   
POL(COND_924_0_EVEN_GT(x1, x2)) = [1] + [2]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1))

The following pairs are in Pbound:

924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])

The following pairs are in P:

924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])

There are no usable rules.

(7) Complex Obligation (AND)

(8) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(0): 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1), x0[0])


The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

(9) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(10) TRUE

(11) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(1): COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(x0[1] - 1 - 1)


The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

(12) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(13) TRUE

(14) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
730_0_power_GT(0) → 763_0_power_Return
955_1_power_InvokeMethod(845_0_power_Return, x1, 1) → 1072_0_power_NE(x1 % 2)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
1072_0_power_NE(0) → 1188_0_power_Return
1072_0_power_NE(x0) → Cond_1072_0_power_NE(!(x0 = 0), x0)
Cond_1072_0_power_NE(TRUE, x0) → 1287_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(x0[0] > 1, x0[0])
(1): COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(x0[1] / 2)

(0) -> (1), if ((x0[0] > 1* TRUE)∧(x0[0]* x0[1]))


(1) -> (0), if ((x0[1] / 2* x0[0]))



The set Q consists of the following terms:
730_0_power_GT(0)
955_1_power_InvokeMethod(845_0_power_Return, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1)
1072_0_power_NE(x0)
Cond_1072_0_power_NE(TRUE, x0)

(15) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 730_0_POWER_GT(x0) → COND_730_0_POWER_GT(>(x0, 1), x0) the following chains were created:
  • We consider the chain 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]), COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2)) which results in the following constraint:

    (1)    (>(x0[0], 1)=TRUEx0[0]=x0[1]730_0_POWER_GT(x0[0])≥NonInfC∧730_0_POWER_GT(x0[0])≥COND_730_0_POWER_GT(>(x0[0], 1), x0[0])∧(UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x0[0], 1)=TRUE730_0_POWER_GT(x0[0])≥NonInfC∧730_0_POWER_GT(x0[0])≥COND_730_0_POWER_GT(>(x0[0], 1), x0[0])∧(UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)







For Pair COND_730_0_POWER_GT(TRUE, x0) → 730_0_POWER_GT(/(x0, 2)) the following chains were created:
  • We consider the chain 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]), COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2)), 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]) which results in the following constraint:

    (7)    (>(x0[0], 1)=TRUEx0[0]=x0[1]/(x0[1], 2)=x0[0]1COND_730_0_POWER_GT(TRUE, x0[1])≥NonInfC∧COND_730_0_POWER_GT(TRUE, x0[1])≥730_0_POWER_GT(/(x0[1], 2))∧(UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥))



    We simplified constraint (7) using rules (III), (IV) which results in the following new constraint:

    (8)    (>(x0[0], 1)=TRUECOND_730_0_POWER_GT(TRUE, x0[0])≥NonInfC∧COND_730_0_POWER_GT(TRUE, x0[0])≥730_0_POWER_GT(/(x0[0], 2))∧(UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] + x0[0] + [-1]max{x0[0], [-1]x0[0]} ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] + x0[0] + [-1]max{x0[0], [-1]x0[0]} ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (x0[0] + [-2] ≥ 0∧[2]x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    (x0[0] ≥ 0∧[4] + [2]x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (12) using rule (IDP_POLY_GCD) which results in the following new constraint:

    (13)    (x0[0] ≥ 0∧[2] + x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 730_0_POWER_GT(x0) → COND_730_0_POWER_GT(>(x0, 1), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

  • COND_730_0_POWER_GT(TRUE, x0) → 730_0_POWER_GT(/(x0, 2))
    • (x0[0] ≥ 0∧[2] + x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = [1]   
POL(FALSE) = 0   
POL(730_0_power_GT(x1)) = [-1] + [-1]x1   
POL(0) = 0   
POL(763_0_power_Return) = [-1]   
POL(955_1_power_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(845_0_power_Return) = [-1]   
POL(1) = [1]   
POL(1072_0_power_NE(x1)) = [-1] + [-1]x1   
POL(2) = [2]   
POL(1188_0_power_Return) = [-1]   
POL(1287_0_power_Return) = [-1]   
POL(Cond_1072_0_power_NE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(730_0_POWER_GT(x1)) = [-1] + x1   
POL(COND_730_0_POWER_GT(x1, x2)) = [-1] + x2   
POL(>(x1, x2)) = [-1]   

Polynomial Interpretations with Context Sensitive Arithemetic Replacement
POL(TermCSAR-Mode @ Context)

POL(/(x1, 2)1 @ {730_0_POWER_GT_1/0}) = max{x1, [-1]x1} + [-1]   

The following pairs are in P>:

COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2))

The following pairs are in Pbound:

730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0])
COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2))

The following pairs are in P:

730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0])

At least the following rules have been oriented under context sensitive arithmetic replacement:

/1

(16) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
730_0_power_GT(0) → 763_0_power_Return
955_1_power_InvokeMethod(845_0_power_Return, x1, 1) → 1072_0_power_NE(x1 % 2)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
1072_0_power_NE(0) → 1188_0_power_Return
1072_0_power_NE(x0) → Cond_1072_0_power_NE(!(x0 = 0), x0)
Cond_1072_0_power_NE(TRUE, x0) → 1287_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(x0[0] > 1, x0[0])


The set Q consists of the following terms:
730_0_power_GT(0)
955_1_power_InvokeMethod(845_0_power_Return, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1)
1072_0_power_NE(x0)
Cond_1072_0_power_NE(TRUE, x0)

(17) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(18) TRUE

(19) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2387_0_power_Load(x0, x1) → 730_0_power_GT(x0, x1)
2420_0_even_Load(x0) → 1300_0_odd_GT(x0)
2636_0_odd_Load(x0) → 1300_0_odd_GT(x0)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT(x0 <= 0, x0)
Cond_1300_0_odd_GT(TRUE, x0) → 1347_0_odd_Return
1300_0_odd_GT(1) → Cond_1300_0_odd_GT1(1 > 0, 1)
Cond_1300_0_odd_GT1(TRUE, 1) → 1372_0_odd_Return
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT2(TRUE, x0) → 1401_1_odd_InvokeMethod(1406_0_even_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT3(TRUE, x0) → 1401_1_odd_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1300_0_odd_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return
1300_0_odd_GT(1) → Cond_924_0_even_GT1(1 > 0, 1)
Cond_924_0_even_GT1(TRUE, 1) → 1067_0_even_Return
1300_0_odd_GT(x0) → Cond_924_0_even_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT2(TRUE, x0) → 1172_1_even_InvokeMethod(1353_0_odd_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_924_0_even_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT3(TRUE, x0) → 1172_1_even_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
730_0_power_GT(x0, 0) → 763_0_power_Return(x0)
730_0_power_GT(x0, 1) → Cond_730_0_power_GT(1 > 0, x0, 1)
Cond_730_0_power_GT(TRUE, x0, 1) → 845_0_power_Return(x0)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT1(x1 > 1 && 0 = x1 / 2, x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1) → 955_1_power_InvokeMethod(960_0_power_Return(x0 * x0), x0, x1, x0 * x0, x1 / 2)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT2(x1 > 1, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1) → 955_1_power_InvokeMethod(730_0_power_GT(x0 * x0, x1 / 2), x0, x1, x0 * x0, x1 / 2)
955_1_power_InvokeMethod(845_0_power_Return(x0), x2, x3, x0, 1) → 1072_0_power_NE(x2, x0, x3 % 2)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4) → 1072_0_power_NE(x2, x1, x3 % 2)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4) → 1072_0_power_NE(x1, x0, x2 % 2)
1072_0_power_NE(x0, x1, 0) → 1188_0_power_Return(x0, x1)
1072_0_power_NE(x0, x1, x2) → Cond_1072_0_power_NE(!(x2 = 0), x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2) → 1287_0_power_Return(x0 * x1)

The integer pair graph contains the following rules and edges:
(0): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
(1): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
(2): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(x3[2] >= 0 && x3[2] < x1[2], java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
(3): COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
(4): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(x4[4] >= 0 && x4[4] < x2[4], java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
(5): COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
(6): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
(7): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
(8): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1, java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
(9): COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), x3[9] + 1, x1[9], x5[9])
(10): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1, java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
(11): COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), x3[11] + 1, x1[11], x5[11])
(12): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1, java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
(13): COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), x4[13] + 1, x2[13], x6[13])
(14): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
(15): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(x4[15] >= 0 && x4[15] < x2[15], java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
(16): COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])
(17): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

(0) -> (2), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x4[0]* x3[2])∧(x1[0]* x4[2]))


(0) -> (4), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x4[0]* x4[4])∧(x1[0]* 0))


(0) -> (15), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x4[0]* x4[15])∧(x1[0]* 1))


(1) -> (2), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x5[1]* x3[2])∧(1* x4[2]))


(1) -> (4), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x5[1]* x4[4])∧(1* 0))


(1) -> (15), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x5[1]* x4[15]))


(2) -> (3), if ((x3[2] >= 0 && x3[2] < x1[2]* TRUE)∧(java.lang.Object(ARRAY(x1[2], x2[2])) →* java.lang.Object(ARRAY(x1[3], x2[3])))∧(x3[2]* x3[3])∧(x4[2]* x4[3]))


(3) -> (6), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x3[3]* x4[6])∧(x1[3]* x0[6])∧(x5[3]* x5[6]))


(3) -> (7), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x3[3]* x5[7])∧(x1[3]* x0[7])∧(x5[3]* 0))


(3) -> (14), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x3[3]* x4[14])∧(x1[3]* x0[14])∧(x5[3]* 1))


(4) -> (5), if ((x4[4] >= 0 && x4[4] < x2[4]* TRUE)∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x4[4]* x4[5]))


(5) -> (6), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[5]* x4[6])∧(x2[5]* x0[6])∧(x6[5]* x5[6]))


(5) -> (7), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[5]* x5[7])∧(x2[5]* x0[7])∧(x6[5]* 0))


(5) -> (14), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[5]* x4[14])∧(x2[5]* x0[14])∧(x6[5]* 1))


(6) -> (8), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[6]* x3[8])∧(x1[6]* x4[8]))


(6) -> (10), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[6]* x3[10])∧(x1[6]* 0))


(6) -> (12), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[6]* x4[12])∧(x1[6]* 1))


(7) -> (8), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x5[7]* x3[8])∧(1* x4[8]))


(7) -> (10), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x5[7]* x3[10])∧(1* 0))


(7) -> (12), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x5[7]* x4[12]))


(8) -> (9), if ((x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[8], x2[8])) →* java.lang.Object(ARRAY(x1[9], x2[9])))∧(x3[8]* x3[9])∧(x4[8]* x4[9]))


(9) -> (0), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x3[9] + 1* x4[0])∧(x1[9]* x0[0])∧(x5[9]* x5[0]))


(9) -> (1), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x3[9] + 1* x5[1])∧(x1[9]* x0[1])∧(x5[9]* 0))


(9) -> (17), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x3[9] + 1* x4[17])∧(x1[9]* x0[17])∧(x5[9]* 1))


(10) -> (11), if ((x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[10], x2[10])) →* java.lang.Object(ARRAY(x1[11], x2[11])))∧(x3[10]* x3[11]))


(11) -> (0), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x3[11] + 1* x4[0])∧(x1[11]* x0[0])∧(x5[11]* x5[0]))


(11) -> (1), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x3[11] + 1* x5[1])∧(x1[11]* x0[1])∧(x5[11]* 0))


(11) -> (17), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x3[11] + 1* x4[17])∧(x1[11]* x0[17])∧(x5[11]* 1))


(12) -> (13), if ((x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1* TRUE)∧(java.lang.Object(ARRAY(x2[12], x3[12])) →* java.lang.Object(ARRAY(x2[13], x3[13])))∧(x4[12]* x4[13]))


(13) -> (0), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x4[13] + 1* x4[0])∧(x2[13]* x0[0])∧(x6[13]* x5[0]))


(13) -> (1), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x4[13] + 1* x5[1])∧(x2[13]* x0[1])∧(x6[13]* 0))


(13) -> (17), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x4[13] + 1* x4[17])∧(x2[13]* x0[17])∧(x6[13]* 1))


(14) -> (8), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[14]* x3[8])∧(x0[14]* x4[8]))


(14) -> (10), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[14]* x3[10])∧(x0[14]* 0))


(14) -> (12), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[14]* x4[12])∧(x0[14]* 1))


(15) -> (16), if ((x4[15] >= 0 && x4[15] < x2[15]* TRUE)∧(java.lang.Object(ARRAY(x2[15], x3[15])) →* java.lang.Object(ARRAY(x2[16], x3[16])))∧(x4[15]* x4[16]))


(16) -> (6), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[16]* x4[6])∧(x2[16]* x0[6])∧(x6[16]* x5[6]))


(16) -> (7), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[16]* x5[7])∧(x2[16]* x0[7])∧(x6[16]* 0))


(16) -> (14), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[16]* x4[14])∧(x2[16]* x0[14])∧(x6[16]* 1))


(17) -> (2), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x4[17]* x3[2])∧(x0[17]* x4[2]))


(17) -> (4), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x4[17]* x4[4])∧(x0[17]* 0))


(17) -> (15), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x4[17]* x4[15])∧(x0[17]* 1))



The set Q consists of the following terms:
2387_0_power_Load(x0, x1)
2420_0_even_Load(x0)
2636_0_odd_Load(x0)
1300_0_odd_GT(x0)
Cond_1300_0_odd_GT(TRUE, x0)
Cond_1300_0_odd_GT1(TRUE, 1)
Cond_1300_0_odd_GT2(TRUE, x0)
Cond_1300_0_odd_GT3(TRUE, x0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
Cond_924_0_even_GT(TRUE, x0)
Cond_924_0_even_GT1(TRUE, 1)
Cond_924_0_even_GT2(TRUE, x0)
Cond_924_0_even_GT3(TRUE, x0)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
Cond_730_0_power_GT(TRUE, x0, 1)
730_0_power_GT(x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1)
955_1_power_InvokeMethod(845_0_power_Return(x0), x1, x2, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4)
1072_0_power_NE(x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2)

(20) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

    (1)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x3[9], 1)=x4[0]x1[9]=x0[0]x5[9]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (1) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], x5[9])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], x5[9])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

    (8)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x3[11], 1)=x4[0]x1[11]=x0[0]x5[11]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (8) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (9)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], x5[11])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], x5[11])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

    (15)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x4[13], 1)=x4[0]x2[13]=x0[0]x6[13]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (15) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (16)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], x6[13])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], x6[13])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x2[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)







For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

    (22)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x3[9], 1)=x5[1]x1[9]=x0[1]x5[9]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (22) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (23)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (23) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (24)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (24) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (25)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (25) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (26)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (26) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (27)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (27) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (28)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

    (29)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x3[11], 1)=x5[1]x1[11]=x0[1]x5[11]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (29) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (30)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

    (36)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x4[13], 1)=x5[1]x2[13]=x0[1]x6[13]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (36) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (37)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)







For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3, 0), <(x3, x1)), java.lang.Object(ARRAY(x1, x2)), x3, x4) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

    (43)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥))



    We simplified constraint (43) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (44)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105 + bni_105] + [bni_105]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)







For Pair COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x1, x5) the following chains were created:
  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

    (50)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x4[0]=x3[2]x1[0]=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (50) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (51)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[0])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[0])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)



  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

    (57)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x5[1]=x3[2]1=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (57) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (58)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (63)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)



  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

    (64)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x4[17]=x3[2]x0[17]=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (64) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (65)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (69)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (70)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)







For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 0) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

    (71)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥))



    We simplified constraint (71) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (72)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (76) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (77)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109 + bni_109] + [bni_109]x2[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)







For Pair COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6) the following chains were created:
  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

    (78)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x4[0]=x4[4]x1[0]=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))



    We simplified constraint (78) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (79)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUECOND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], x2[4], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))



    We simplified constraint (79) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (80)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (80) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (81)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (81) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (82)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (82) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (83)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (83) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (84)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111 + bni_111] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)



  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

    (85)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x5[1]=x4[4]1=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))



    We solved constraint (85) using rules (I), (II).
  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

    (86)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x4[17]=x4[4]x0[17]=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))



    We simplified constraint (86) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (87)    (>=(x4[4], 0)=TRUE<(x4[4], 0)=TRUECOND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[17])), x4[4], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[17])), x4[4], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(0, x3[17])), x4[4], 0, x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))



    We simplified constraint (87) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (88)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (88) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (89)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (89) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (90)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (90) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (91)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)



    We solved constraint (91) using rule (IDP_SMT_SPLIT).




For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

    (92)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x3[3]=x4[6]x1[3]=x0[6]x5[3]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (92) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (93)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], x5[3])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], x5[3])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (93) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (94)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (94) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (95)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (95) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (96)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (96) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (97)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (97) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (98)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

    (99)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x4[5]=x4[6]x2[5]=x0[6]x6[5]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (99) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (100)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], x6[5])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], x6[5])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (100) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (101)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (101) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (102)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (102) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (103)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (103) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (104)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (104) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (105)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

    (106)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x4[16]=x4[6]x2[16]=x0[6]x6[16]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (106) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (107)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], x6[16])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], x6[16])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))



    We simplified constraint (107) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (108)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (108) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (109)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (109) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (110)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (110) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (111)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (111) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (112)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)







For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

    (113)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x3[3]=x5[7]x1[3]=x0[7]x5[3]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (113) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (114)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (114) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (115)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (115) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (116)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (116) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (117)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (117) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (118)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (118) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (119)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x1[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

    (120)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x4[5]=x5[7]x2[5]=x0[7]x6[5]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (120) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (121)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (121) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (122)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (122) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (123)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (123) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (124)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (124) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (125)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (125) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (126)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

    (127)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x4[16]=x5[7]x2[16]=x0[7]x6[16]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (127) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (128)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))



    We simplified constraint (128) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (129)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (129) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (130)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (130) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (131)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (131) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (132)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (132) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (133)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)







For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, x4) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

    (134)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥))



    We simplified constraint (134) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (135)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥))



    We simplified constraint (135) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (136)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)



    We simplified constraint (136) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (137)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)



    We simplified constraint (137) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (138)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)



    We simplified constraint (138) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (139)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)



    We simplified constraint (139) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (140)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117 + (2)bni_117] + [bni_117]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)







For Pair COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5) the following chains were created:
  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

    (141)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x4[6]=x3[8]x1[6]=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (141) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (142)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[6])), x3[8], x1[6])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[6])), x3[8], x1[6])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x3[6])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (142) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (143)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (143) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (144)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (144) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (145)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (145) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (146)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (146) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (147)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)



  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

    (148)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x5[7]=x3[8]1=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (148) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (149)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x4[7])), x3[8], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x4[7])), x3[8], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x4[7])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (149) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (150)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (150) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (151)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (151) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (152)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (152) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (153)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (153) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (154)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)



  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

    (155)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x4[14]=x3[8]x0[14]=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (155) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (156)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[14])), x3[8], x1[8])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[14])), x3[8], x1[8])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x3[14])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))



    We simplified constraint (156) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (157)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (157) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (158)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (158) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (159)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (159) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (160)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)



    We simplified constraint (160) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (161)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)







For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, 0) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

    (162)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥))



    We simplified constraint (162) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (163)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥))



    We simplified constraint (163) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (164)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (164) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (165)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (165) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (166)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (166) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (167)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (167) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (168)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121 + (2)bni_121] + [bni_121]x1[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)







For Pair COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5) the following chains were created:
  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

    (169)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x4[6]=x3[10]x1[6]=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))



    We simplified constraint (169) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (170)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[10], x3[6])), x3[10], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[10], x3[6])), x3[10], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x3[6])), +(x3[10], 1), x1[10], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))



    We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (171)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (172)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (173)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (174)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (174) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (175)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123 + (2)bni_123] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)



  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

    (176)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x5[7]=x3[10]1=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))



    We solved constraint (176) using rules (I), (II).
  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

    (177)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x4[14]=x3[10]x0[14]=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))



    We simplified constraint (177) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (178)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(0, +(x3[10], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[14])), x3[10], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[14])), x3[10], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(0, x3[14])), +(x3[10], 1), 0, x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))



    We simplified constraint (178) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (179)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (179) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (180)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (180) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (181)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (181) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (182)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)



    We solved constraint (182) using rule (IDP_SMT_SPLIT).




For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4, 0), >(x2, +(x4, 1))), <=(0, +(x4, 1))), java.lang.Object(ARRAY(x2, x3)), x4, 1) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

    (183)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥))



    We simplified constraint (183) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (184)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥))



    We simplified constraint (184) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (185)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (185) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (186)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (186) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (187)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (187) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (188)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (188) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (189)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125 + (2)bni_125] + [bni_125]x2[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)







For Pair COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), +(x4, 1), x2, x6) the following chains were created:
  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

    (190)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x4[6]=x4[12]x1[6]=1&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (190) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (191)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x3[6])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x3[6])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[6])), +(x4[12], 1), x2[12], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (191) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (192)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (192) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (193)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (193) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (194)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (194) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (195)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (195) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (196)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)



  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

    (197)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x5[7]=x4[12]&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (197) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (198)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x4[7])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x4[7])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x4[7])), +(x4[12], 1), x2[12], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (198) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (199)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (199) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (200)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (200) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (201)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (201) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (202)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (202) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (203)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)



  • We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

    (204)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x4[14]=x4[12]x0[14]=1&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (204) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (205)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(1, +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[14])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[14])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(1, x3[14])), +(x4[12], 1), 1, x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))



    We simplified constraint (205) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (206)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (206) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (207)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (207) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (208)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (208) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (209)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)



    We solved constraint (209) using rule (IDP_SMT_SPLIT).




For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

    (210)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x3[3]=x4[14]x1[3]=x0[14]x5[3]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (210) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (211)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (211) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (212)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (212) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (213)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (213) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (214)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (214) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (215)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (215) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (216)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x1[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

    (217)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x4[5]=x4[14]x2[5]=x0[14]x6[5]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (217) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (218)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (218) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (219)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (219) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (220)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (220) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (221)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (221) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (222)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (222) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (223)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

    (224)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x4[16]=x4[14]x2[16]=x0[14]x6[16]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (224) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (225)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))



    We simplified constraint (225) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (226)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (226) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (227)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (227) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (228)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (228) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (229)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (229) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (230)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)







For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 1) the following chains were created:
  • We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

    (231)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥))



    We simplified constraint (231) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (232)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥))



    We simplified constraint (232) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (233)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (233) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (234)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (234) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (235)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (235) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (236)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (236) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (237)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131 + bni_131] + [bni_131]x2[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)







For Pair COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6) the following chains were created:
  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

    (238)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x4[0]=x4[15]x1[0]=1&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (238) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (239)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], x2[15], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (239) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (240)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (240) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (241)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (241) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (242)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (242) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (243)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (243) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (244)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

    (245)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x5[1]=x4[15]&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (245) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (246)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], x2[15], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (246) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (247)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (247) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (248)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (248) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (249)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (249) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (250)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (250) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (251)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



  • We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

    (252)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x4[17]=x4[15]x0[17]=1&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (252) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (253)    (>=(x4[15], 0)=TRUE<(x4[15], 1)=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[17])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[17])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(1, x3[17])), x4[15], 1, x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))



    We simplified constraint (253) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (254)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (254) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (255)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (255) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (256)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (256) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (257)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (257) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (258)    (0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)







For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0) the following chains were created:
  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

    (259)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x3[9], 1)=x4[17]x1[9]=x0[17]x5[9]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (259) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (260)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (260) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (261)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (261) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (262)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (262) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (263)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (263) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (264)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (264) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (265)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

    (266)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x3[11], 1)=x4[17]x1[11]=x0[17]x5[11]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (266) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (267)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (267) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (268)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (268) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (269)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (269) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (270)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (270) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (271)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (271) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (272)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



  • We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

    (273)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x4[13], 1)=x4[17]x2[13]=x0[17]x6[13]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (273) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

    (274)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))



    We simplified constraint (274) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (275)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (275) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (276)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (276) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (277)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (277) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (278)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (278) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (279)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)
    • (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x2[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

  • 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)
    • (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

  • 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3, 0), <(x3, x1)), java.lang.Object(ARRAY(x1, x2)), x3, x4)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105 + bni_105] + [bni_105]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

  • COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x1, x5)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

  • 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 0)
    • (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109 + bni_109] + [bni_109]x2[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)

  • COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6)
    • (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111 + bni_111] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)

  • 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
    • (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

  • 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x1[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)
    • (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

  • 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, x4)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117 + (2)bni_117] + [bni_117]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

  • COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

  • 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, 0)
    • (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121 + (2)bni_121] + [bni_121]x1[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)

  • COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5)
    • (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123 + (2)bni_123] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)

  • 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4, 0), >(x2, +(x4, 1))), <=(0, +(x4, 1))), java.lang.Object(ARRAY(x2, x3)), x4, 1)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125 + (2)bni_125] + [bni_125]x2[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)

  • COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), +(x4, 1), x2, x6)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

  • 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0)
    • (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x1[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)
    • (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

  • 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 1)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131 + bni_131] + [bni_131]x2[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)

  • COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)
    • (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)
    • (0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

  • 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0)
    • (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
    • (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
    • (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(2387_0_power_Load(x1, x2)) = [-1] + x2   
POL(730_0_power_GT(x1, x2)) = [-1] + x1 + x2   
POL(2420_0_even_Load(x1)) = [-1]   
POL(1300_0_odd_GT(x1)) = [-1] + x1   
POL(2636_0_odd_Load(x1)) = [-1]   
POL(Cond_1300_0_odd_GT(x1, x2)) = [-1] + x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1347_0_odd_Return) = [-1]   
POL(1) = [1]   
POL(Cond_1300_0_odd_GT1(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(1372_0_odd_Return) = [-1]   
POL(Cond_1300_0_odd_GT2(x1, x2)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(1401_1_odd_InvokeMethod(x1, x2)) = [-1] + x1 + x2   
POL(1406_0_even_Return(x1)) = x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(Cond_1300_0_odd_GT3(x1, x2)) = [-1] + x2   
POL(1224_0_even_Return(x1)) = [-1] + x1   
POL(1422_0_odd_Return(x1)) = [-1] + x1   
POL(1067_0_even_Return) = [-1]   
POL(Cond_924_0_even_GT(x1, x2)) = [-1] + x2   
POL(980_0_even_Return) = [-1]   
POL(Cond_924_0_even_GT1(x1, x2)) = [-1]   
POL(Cond_924_0_even_GT2(x1, x2)) = [-1] + x2   
POL(1172_1_even_InvokeMethod(x1, x2)) = [-1] + x1 + x2   
POL(1353_0_odd_Return(x1)) = x1   
POL(Cond_924_0_even_GT3(x1, x2)) = [-1] + x2   
POL(763_0_power_Return(x1)) = [-1] + x1   
POL(Cond_730_0_power_GT(x1, x2, x3)) = [-1] + x2   
POL(845_0_power_Return(x1)) = [-1] + x1   
POL(Cond_730_0_power_GT1(x1, x2, x3)) = [-1] + x2 + x3   
POL(2) = [2]   
POL(955_1_power_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x1 + x3 + x2 + x4 + x5   
POL(960_0_power_Return(x1)) = x1   
POL(*(x1, x2)) = x1·x2   
POL(Cond_730_0_power_GT2(x1, x2, x3)) = [-1] + x2 + x3   
POL(1072_0_power_NE(x1, x2, x3)) = [-1] + x2 + x1 + x3   
POL(1188_0_power_Return(x1, x2)) = [-1] + x2 + x1   
POL(1287_0_power_Return(x1)) = [-1] + x1   
POL(Cond_1072_0_power_NE(x1, x2, x3, x4)) = [-1] + x2 + x3 + x4   
POL(2387_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1]x2 + [-1]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(2420_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x2   
POL(COND_2420_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(>=(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(2595_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x2 + [-1]x1   
POL(COND_2420_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(2636_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x2   
POL(COND_2636_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(COND_2636_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(COND_2636_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(COND_2420_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   

The following pairs are in P>:

2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

The following pairs are in Pbound:

2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

The following pairs are in P:

2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])

There are no usable rules.

(21) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2387_0_power_Load(x0, x1) → 730_0_power_GT(x0, x1)
2420_0_even_Load(x0) → 1300_0_odd_GT(x0)
2636_0_odd_Load(x0) → 1300_0_odd_GT(x0)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT(x0 <= 0, x0)
Cond_1300_0_odd_GT(TRUE, x0) → 1347_0_odd_Return
1300_0_odd_GT(1) → Cond_1300_0_odd_GT1(1 > 0, 1)
Cond_1300_0_odd_GT1(TRUE, 1) → 1372_0_odd_Return
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT2(TRUE, x0) → 1401_1_odd_InvokeMethod(1406_0_even_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT3(TRUE, x0) → 1401_1_odd_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1300_0_odd_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return
1300_0_odd_GT(1) → Cond_924_0_even_GT1(1 > 0, 1)
Cond_924_0_even_GT1(TRUE, 1) → 1067_0_even_Return
1300_0_odd_GT(x0) → Cond_924_0_even_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT2(TRUE, x0) → 1172_1_even_InvokeMethod(1353_0_odd_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_924_0_even_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT3(TRUE, x0) → 1172_1_even_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
730_0_power_GT(x0, 0) → 763_0_power_Return(x0)
730_0_power_GT(x0, 1) → Cond_730_0_power_GT(1 > 0, x0, 1)
Cond_730_0_power_GT(TRUE, x0, 1) → 845_0_power_Return(x0)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT1(x1 > 1 && 0 = x1 / 2, x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1) → 955_1_power_InvokeMethod(960_0_power_Return(x0 * x0), x0, x1, x0 * x0, x1 / 2)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT2(x1 > 1, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1) → 955_1_power_InvokeMethod(730_0_power_GT(x0 * x0, x1 / 2), x0, x1, x0 * x0, x1 / 2)
955_1_power_InvokeMethod(845_0_power_Return(x0), x2, x3, x0, 1) → 1072_0_power_NE(x2, x0, x3 % 2)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4) → 1072_0_power_NE(x2, x1, x3 % 2)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4) → 1072_0_power_NE(x1, x0, x2 % 2)
1072_0_power_NE(x0, x1, 0) → 1188_0_power_Return(x0, x1)
1072_0_power_NE(x0, x1, x2) → Cond_1072_0_power_NE(!(x2 = 0), x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2) → 1287_0_power_Return(x0 * x1)

The integer pair graph contains the following rules and edges:
(2): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(x3[2] >= 0 && x3[2] < x1[2], java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
(3): COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
(4): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(x4[4] >= 0 && x4[4] < x2[4], java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
(5): COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
(6): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
(7): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
(8): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1, java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
(9): COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), x3[9] + 1, x1[9], x5[9])
(10): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1, java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
(11): COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), x3[11] + 1, x1[11], x5[11])
(12): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1, java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
(13): COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), x4[13] + 1, x2[13], x6[13])
(14): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
(15): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(x4[15] >= 0 && x4[15] < x2[15], java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
(16): COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])

(2) -> (3), if ((x3[2] >= 0 && x3[2] < x1[2]* TRUE)∧(java.lang.Object(ARRAY(x1[2], x2[2])) →* java.lang.Object(ARRAY(x1[3], x2[3])))∧(x3[2]* x3[3])∧(x4[2]* x4[3]))


(4) -> (5), if ((x4[4] >= 0 && x4[4] < x2[4]* TRUE)∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x4[4]* x4[5]))


(3) -> (6), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x3[3]* x4[6])∧(x1[3]* x0[6])∧(x5[3]* x5[6]))


(5) -> (6), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[5]* x4[6])∧(x2[5]* x0[6])∧(x6[5]* x5[6]))


(16) -> (6), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[16]* x4[6])∧(x2[16]* x0[6])∧(x6[16]* x5[6]))


(3) -> (7), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x3[3]* x5[7])∧(x1[3]* x0[7])∧(x5[3]* 0))


(5) -> (7), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[5]* x5[7])∧(x2[5]* x0[7])∧(x6[5]* 0))


(16) -> (7), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[16]* x5[7])∧(x2[16]* x0[7])∧(x6[16]* 0))


(6) -> (8), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[6]* x3[8])∧(x1[6]* x4[8]))


(7) -> (8), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x5[7]* x3[8])∧(1* x4[8]))


(14) -> (8), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[14]* x3[8])∧(x0[14]* x4[8]))


(8) -> (9), if ((x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[8], x2[8])) →* java.lang.Object(ARRAY(x1[9], x2[9])))∧(x3[8]* x3[9])∧(x4[8]* x4[9]))


(6) -> (10), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[6]* x3[10])∧(x1[6]* 0))


(7) -> (10), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x5[7]* x3[10])∧(1* 0))


(14) -> (10), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[14]* x3[10])∧(x0[14]* 0))


(10) -> (11), if ((x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[10], x2[10])) →* java.lang.Object(ARRAY(x1[11], x2[11])))∧(x3[10]* x3[11]))


(6) -> (12), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[6]* x4[12])∧(x1[6]* 1))


(7) -> (12), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x5[7]* x4[12]))


(14) -> (12), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[14]* x4[12])∧(x0[14]* 1))


(12) -> (13), if ((x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1* TRUE)∧(java.lang.Object(ARRAY(x2[12], x3[12])) →* java.lang.Object(ARRAY(x2[13], x3[13])))∧(x4[12]* x4[13]))


(3) -> (14), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x3[3]* x4[14])∧(x1[3]* x0[14])∧(x5[3]* 1))


(5) -> (14), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[5]* x4[14])∧(x2[5]* x0[14])∧(x6[5]* 1))


(16) -> (14), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[16]* x4[14])∧(x2[16]* x0[14])∧(x6[16]* 1))


(15) -> (16), if ((x4[15] >= 0 && x4[15] < x2[15]* TRUE)∧(java.lang.Object(ARRAY(x2[15], x3[15])) →* java.lang.Object(ARRAY(x2[16], x3[16])))∧(x4[15]* x4[16]))



The set Q consists of the following terms:
2387_0_power_Load(x0, x1)
2420_0_even_Load(x0)
2636_0_odd_Load(x0)
1300_0_odd_GT(x0)
Cond_1300_0_odd_GT(TRUE, x0)
Cond_1300_0_odd_GT1(TRUE, 1)
Cond_1300_0_odd_GT2(TRUE, x0)
Cond_1300_0_odd_GT3(TRUE, x0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
Cond_924_0_even_GT(TRUE, x0)
Cond_924_0_even_GT1(TRUE, 1)
Cond_924_0_even_GT2(TRUE, x0)
Cond_924_0_even_GT3(TRUE, x0)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
Cond_730_0_power_GT(TRUE, x0, 1)
730_0_power_GT(x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1)
955_1_power_InvokeMethod(845_0_power_Return(x0), x1, x2, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4)
1072_0_power_NE(x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2)

(22) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 15 less nodes.

(23) TRUE